package com.jse.jakarta;

import java.io.File;
import java.util.Set;

import com.jse.Jse;
import com.jse.Refs;
import com.jse.web.Web;

import jakarta.servlet.MultipartConfigElement;
import jakarta.servlet.ServletContainerInitializer;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;

public class JseServletContainerInitializer implements ServletContainerInitializer {

	@Override
	public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException {
		Web.sc=ctx;
	    if (ctx.getClass().getSimpleName().equals("NoPluggabilityServletContext")) {
	    	  Web.sc = (ServletContext)Refs.getPrivateField(ctx,"sc",ServletContext.class);
	    }
	    Jse.tempdir=(File)ctx.getAttribute("jakarta.servlet.context.tempdir");
	    if(Jse.tempdir==null)Jse.tempdir=new File(Jse.tmpdir);
		var d=ctx.addServlet("jse",new JseServlet());
		d.setAsyncSupported(true);//异步
		d.setMultipartConfig(new MultipartConfigElement(Jse.tempdir.toString(),
				104857600l,//100m
				524288000l,//500m
				0));
		d.addMapping("/");
		Jse.runing=true;
		String webapp=ctx.getRealPath("/").replace('\\','/');
		if(webapp.indexOf("tomcat.8080")==-1) {
			Jse.webapp=webapp.substring(0,webapp.length()-1);
			Jse.webapps=webapp.substring(0,Jse.webapp.lastIndexOf('/'));
			if(Jse.webapps.indexOf("/tomcat")!=-1&&Jse.webapps.endsWith("/web")) {
				Jse.webapps=Jse.webapps+"apps";
			}
		}
		ctx.addListener(new JseWebListener());//自定义server暂不支持
	}

}
